package org.dtrevien.metamodel.graphviz.stmt.impl;

import java.util.ArrayList;
import java.util.List;

import org.dtrevien.metamodel.graphviz.AttrList;
import org.dtrevien.metamodel.graphviz.NodeId;
import org.dtrevien.metamodel.graphviz.edgerhs.EdgeRHS;
import org.dtrevien.metamodel.graphviz.stmt.Stmt;
import org.dtrevien.metamodel.graphviz.stmt.types.LinkType;
import org.dtrevien.metamodel.graphviz.visitor.Visitor;

public class EdgeStmtNode extends Stmt {

	protected NodeId nodeId;
	protected List<AttrList> attrLists;
	protected List<EdgeRHS> edgeRHSs;
	protected LinkType linkType;

	protected String tailLabel;
	protected String headLabel;
	
	public EdgeStmtNode() {
		this.attrLists = new ArrayList<AttrList>();
		this.edgeRHSs = new ArrayList<EdgeRHS>();
		this.tailLabel = "";
		this.headLabel = "";
	}

	public EdgeStmtNode(NodeId nodeId, List<AttrList> attrLists,
			List<EdgeRHS> edgeRHSs, LinkType linkType, String tailLabel, String headLabel) {
		super();
		this.nodeId = nodeId;
		this.attrLists = attrLists;
		this.edgeRHSs = edgeRHSs;
		this.linkType = linkType;
		this.tailLabel = tailLabel;
		this.headLabel = headLabel;
	}

	public NodeId getNodeId() {
		return this.nodeId;
	}

	public void setNodeId(NodeId nodeId) {
		this.nodeId = nodeId;
	}

	public List<AttrList> getAttrLists() {
		return this.attrLists;
	}

	public void setAttrLists(List<AttrList> attrLists) {
		this.attrLists = attrLists;
	}

	public List<EdgeRHS> getEdgeRHSs() {
		return this.edgeRHSs;
	}

	public void setEdgeRHSs(List<EdgeRHS> edgeRHSs) {
		this.edgeRHSs = edgeRHSs;
	}

	@Override
	public void accept(Visitor v) {
		v.visitEdgeStmtNode(this);
	}

	public LinkType getLinkType() {
		return this.linkType;
	}

	public void setLinkType(LinkType linkType) {
		this.linkType = linkType;
	}

	public String getTailLabel() {
		return this.tailLabel;
	}

	public String getHeadLabel() {
		return this.headLabel;
	}

	public void setTailLabel(String tailLabel) {
		this.tailLabel = tailLabel;
	}

	public void setHeadLabel(String headLabel) {
		this.headLabel = headLabel;
	}
	
}
